package com.dhcc.DRGsHosp.facade;

import java.util.List;
import java.util.Map;

import org.openkoala.koala.commons.InvokeResult;

/**
 * @title		:ICDFacade.java
 * @description	:
 * @author		:lileizheng
 * @date		:2015年8月12日
 * @version     :1.0
 * @copyright   :DHCC 2013-2014 
 */
public interface ICDFacade {

	/**
	 * @methodname    :matchICD1
	 * @description   : icd匹配测试
	 * @param         :
	 * @author        :lileizheng
	 * @param userCode 
	 * @param icdType 
	 * @return        :
	 * @date          :2015年8月12日
	 */
	public InvokeResult matchICD(String icdVersion, String userCode, String icdType);
	
	/**
	 * @methodname    :getICDMatching
	 * @description   : icd匹配结果获取
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2015年8月13日
	 */
	public InvokeResult getICDMatching(Map<String, Object> param);

	/**
	 * @methodname    :getICDMatchResult
	 * @description   :获取匹配结果数据汇总
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2016年6月29日
	 */
	public InvokeResult getICDMatchResult(String icdVersion, String icdType, String depCode);

	/**
	 * @methodname    :getBJICD
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2016年6月29日
	 */
	public Object getBJICD(String icdType, String icdVersion, String icdValue, String icdValue1);

	/**
	 * @methodname    :updateICDMatching
	 * @description   :更新记录
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2016年6月29日
	 */
	public InvokeResult updateICDMatching(Map<String, Object> json);

	/**
	 * @methodname    :updateOneICDPlatform
	 * @description   : 一条ICD的增加或者修改(以hosp_icd_code + drg_icd_version为唯一判断条件）对照平台用
	 * @author        :qiaoyilong
	 * @date          :2018年11月16日
	 */
	public InvokeResult updateOneICDPlatform(Map<String, Object> dto);
	/**
	 * @methodname    :getEditLog
	 * @description   :获取ICD修改日志
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2016年6月30日
	 */
	public InvokeResult getEditLog(String hICDCode, String icdVersion);

	/**
	 * @methodname    :icdImport
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @param icdType 
	 * @return        :
	 * @date          :2016年8月26日
	 */
	public InvokeResult icdImport(String icdType, Map<String, Object> param);


	/**
	 * @methodname    :getICDMatchResult
	 * @description   :ICD对照结果页面数据
	 * @param         :
	 * @author        :lileizheng
	 * @param isOnlyMatch 
	 * @return        :
	 * @date          :2017年3月1日
	 */
	public InvokeResult getICDMatchResultTable(String icdType, String isOnlyMatch);


	/**
	 * @methodname    :getICDMatchResultTableMatch
	 * @description   :ICD对照平台页面数据
	 * @author        :qiaoyilong
	 * @date          :2018年11月16日
	 */
	public InvokeResult getICDMatchResultTablePlatform(String icdType,String icdVersion, String isOnlyMatch);

	/**
	 * @methodname    :analysisICD
	 * @description   :ICD对照文件解析
	 * @param         :filePath
	 * @author        :yujiaolong
	 * @param filePath 
	 * @param icdType 
	 * @return        :InvokeResult
	 * @date          :2017年5月12日
	 */
	public InvokeResult analysisICD( String icdType,String icdVersion,String userCode, String filePath);

	/**
	 * @description :ICD对照文件解析(ICD对照平台页面用）
	 * @author :qiaoyilong
	 * @date :2018年11月17日
	 */
	public InvokeResult analysisICDPlatform(String icdType,String icdVersion,String userCode, String filePath);
	/**
	 * 
	 * @methodname :updateOneICDOper
	 * @Description : 一条ICD的增加或者修改
	 * @author:yujiaolong
	 * @return InvokeResult
	 * @date :2017年5月23日
	 */
	public InvokeResult updateOneICD(Map<String, Object> dto);

	public InvokeResult findDescByCode(String code, String type);

	public InvokeResult findBJDescByCode(String code, String type, String icdVersion);

	public InvokeResult findUploadProgress();

	public InvokeResult batchSummitIcd(String icdType, String matchType, String icdVersion);

	public InvokeResult findBjIcdCode(String icdVersion, String icdType);


	/**
	 * 
	 *  updateMrIsOper.  
	 *  @Description：更新手术表中的手术/操作字段
	 *  @Author ZouYiyu
	 *  @param dateFrom
	 *  @param dateTo 
	 *  @Date:2017年10月26日上午9:44:54
	 */
	public void updateMrIsOper(String dateFrom,String dateTo);

	/**
	 * 
	 *  operDicType.  
	 *  @Description：查询数据库中icd字典版本
	 *  @Author ZouYiyu
	 *  @param icdType
	 *  @return 
	 *  @Date:2017年11月16日下午5:26:22
	 */
	public List<Map<String, Object>> operDicType(String icdType);
	/**
	 * 
	 *  ICDMatchBigData.  
	 *  @Description：调用大数据接口，ICD对照
	 *  @Author WENYI
	 *  @param filePath
	 *  @param contrastType
	 *  @param contrastVersion
	 *  @param contrastResultCnt
	 *  @return 
	 *  @Date:2018年3月30日下午2:25:56
	 */
	public InvokeResult ICDMatchBigData(String filePath,String contrastType,String contrastVersion,String contrastResultCnt);
	
	/**
	 * 
	 * @methodname    :getNoCompareCase
	 * @description   : 根据未对照上诊断编码查病例明细
	 * @param         :
	 * @author        :sulina
	 * @param icdType2 
	 * @return        :
	 * @date          :2018年11月15日
	 */
	public List<Map<String, Object>> getNoCompareCase(String icdCode,String icdDesc, String icdType);

	/**
	 * @description 查找诊断字典
	 * @param condition
	 * @return
	 */
	List<Map<String, Object>> findDiags(String condition);

	/**
	 * @description 查找手术字典
	 * @param condition
	 * @return
	 */
	List<Map<String, Object>> findOpers(String condition);
	
}
